// 非官网文档总结 参考https://www.bilibili.com/video/BV1TA4y1D7in

// 使用枚举可以定义一些带名字的常量，
// 使用枚举可以清晰的表达意图或创建一组有区别的用例
// TypeScript支持数字的和基于字符串的枚举。 
// 可混合使用但不推荐(会被后来者问候)
// 示例：
// enum Xy {
//     x = 1,
//     y = "2"
// }


// 数字枚举
// 数字枚举默认从0开始编号，依次递增
// 我们也可指定某一枚举case的特定值
enum Direction {
    Up,
    Down,
    Left = 4,
    Right = 5,
    LeftUp = 8,
    RightUp = 8
}

// 获取枚举项
// 以对象获取属性方式得到 Direction.key 或 Direction["key"]
// console.log(Direction.Up, Direction["Down"])

// 以值去获取相应枚举项       注:仅支持数字枚举
// console.log(Direction[4])
// 当值相同时 则得到最后一个符合条件的枚举项
// console.log(Direction[8])


// 字符串枚举
enum DangerLv {
    one = "green",
    two = "blue",
    three = "orange",
    four = "ren"
}
let one: DangerLv = DangerLv.one
let two: DangerLv = DangerLv["two"]
// console.log(one)
// console.log(two)


// 常数枚举
// 常数枚举与普通枚举的区别是，
// 它会在编译阶段被删除(转为js后不显示)，并且不能包含计算成员。
const enum Color {
    Red, Green, Blue
}
// console.log(Color.Red)